package com.oyjd.ybx.business.goods.service;

import java.util.List;
import java.util.Map;

import com.oyjd.ybx.bean.vo.ClassifyVO;
import com.oyjd.ybx.business.goods.vo.GoodsInfoExVO;
import com.oyjd.ybx.fw.action.Page;

/**
 * 
 * 商品信息业务接口
 * 
 * @author <b>欧建东<br/>
 *         Email:oyjd@163.com</b>
 * @version 1.0
 */
public interface GoodsService {
	/**
	 * 获取商品信息列表数据
	 * 
	 * @param page
	 *            页面对象
	 * @param user
	 *            当前用户
	 * @return
	 */
	Page<GoodsInfoExVO> getList(Page<GoodsInfoExVO> page, String user);

	/**
	 * 获取前端大类商品信息展示列表
	 * 
	 * @param page
	 * @return
	 */
	Page<GoodsInfoExVO> getFrontList(Page<GoodsInfoExVO> page);

	/**
	 * 根据ID获取商品信息对象信息
	 * 
	 * @param id
	 *            ID
	 * @return
	 */
	GoodsInfoExVO getGoodsInfoVO(String goodsId);

	/**
	 * 统计浏览量
	 * 
	 * @param goodsId
	 *            物品ID
	 * @param ip
	 *            请求地址
	 */
	void countLook(String goodsId, String ip);

	/**
	 * 增加商品信息
	 * 
	 * @param ageId
	 *            年龄段主键
	 * @param classId
	 *            分类ID
	 * @param goodsName
	 *            商品名称
	 * @param goodsPic
	 *            商品图片名称
	 * @param recommend
	 *            推荐理由
	 * @param link
	 *            原始链接
	 * @param user
	 *            当前用户
	 */
	void add(String ageId, String classId, String goodsName, String goodsPic, String recommend, String link, String user) throws Exception;

	/**
	 * 修改商品信息
	 * 
	 * @param goodsId
	 *            商品ID
	 * @param ageId
	 *            年龄段主键
	 * @param classId
	 *            分类ID
	 * @param goodsName
	 *            商品名称
	 * @param goodsPic
	 *            商品图片名称
	 * @param recommend
	 *            推荐理由
	 * @param link
	 *            原始链接
	 */
	void edit(String goodsId, String ageId, String classId, String goodsName, String goodsPic, String recommend, String link) throws Exception;

	/**
	 * 删除商品信息
	 * 
	 * @param ids
	 *            多个ID
	 * @return
	 */
	void remove(String[] ids);

	/**
	 * 更改商品信息状态
	 * 
	 * @param ids
	 *            多个ID
	 * @param status
	 *            状态
	 * @param user
	 *            当前用户
	 * @return
	 */
	void updateStatus(String[] ids, int status, String user);

	/**
	 * 获取最新上线物品数
	 * 
	 * @return
	 */
	Map<String, Integer> getNewGoodsCount();

	/**
	 * 获取最新上线物品数从数据库中
	 * 
	 * @return
	 */
	void getNewGoodsCountByDb();

	/**
	 * 获取热门的第三分类
	 * 
	 * 
	 * @return
	 */
	Map<String, List<ClassifyVO>> getHotClass3();
}
